package com.shihb.chapter04collection

import scala.collection.mutable.ListBuffer

/**
 * Description:List和ListBuffer代码演示
 *
 * @author shihb
 * @date 2020/9/27 11:31
 */
object Demo03List {
  def main(args: Array[String]): Unit = {
    test1


  }

  /**
   * List
   */
  def test: Unit ={
    /*
     默认情况下list是scala.collection.immutable.list是不可变的
     scala的list是不可变的，需要可变，使用ListBuffer
     list在 scala包下声明引用了
    */
    // 1、创建
    val list01 = List(1, 2, 3)
    val nil = Nil //这是一个空集合
    println(list01)
    println(nil)
    // 2、访问list元素
    println(list01(1))
    // 3、元素的追加 :对list,+对元素,不可变返回新List而已,本身并没有变化
    //最后追加
    val list02=list01:+4
    //最前追加
    val list03=0+:list02
    println("list03",list03)
    println("list01",list01)
    // 4、::  :::使用会把list扁平化再放进去集合,两边都要是集合,不然报错
    println("::使用","A"::"b"::list01::Nil)//(::使用,List(A, b, List(1, 2, 3)))
    println(":::使用","A"::"b"::list01:::Nil)//(:::使用,List(A, b, 1, 2, 3))
    // 5、获取集合前几个
    val ints = list01.take(3)
    println(ints)
    println(list01)
    // 6、去掉前几个返回剩下的
    val ints1 = list01.drop(2)
    println(ints1)
    println(list01)
  }
  /**
   * ListBuffer,可变的seq->buffer
   */
  def test1: Unit ={
    // 创建
    val listBuffer = ListBuffer(0, 1, 2, "3", 4)
    // 访问
    println(listBuffer(0))
    // 遍历时有序号的
    println(listBuffer)
    //动态的增加元素
    val list = new ListBuffer[Any]
    list+=5
    list.append(6,7,8)
    println(list)
    //返回新的list,旧的list不会改变
    //加上一个集合,把值拿出来再加进去,+=就是把list放进去
    list++=listBuffer//ListBuffer(5, 6, 7, 8, 0, 1, 2, 3, 4)
    println(list)
    val list1=list:+9
    val list2 = list:+listBuffer
    println(list1)
    println("list2",list2)
    println("list",list)
    // 删除
    list1.remove(0)
    println(list1)
    list1-="3"
    println(list1)


  }


}
